#ifndef IDEVICEBUFFER_H
#define IDEVICEBUFFER_H


#include "Framework/Prerequisites.h"

namespace tyro
{
	namespace Graphics
	{

		class IDeviceBuffer
		{
		public:

			IDeviceBuffer(){}

			virtual void WriteData(size_t memOffset, size_t length, const void* source) = 0;
			virtual void ReadData(size_t memOffset, size_t length, void* destination) = 0;

			void* Lock();
			virtual void* Lock(size_t offset, size_t length);
		    virtual void* LockImpl(size_t offset, size_t length) = 0;
			
			virtual void Unlock(void);
			virtual void UnlockImpl( void ) = 0;

		protected:

			size_t	sizeInBytes;
		private:
		};


	}
}

#endif